package fr.afcepf.atod16.groupe1.projet1.service;

import fr.afcepf.atod16.groupe1.projet1.dao.client.DaoCompteClient;
import fr.afcepf.atod16.groupe1.projet1.dto.client.DtoCompteClient;
import fr.afcepf.atod16.groupe1.projet1.exception.ErreurCreationCompte;
import fr.afcepf.atod16.groupe1.projet1.exception.ErreurLoginConnexion;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author G
 */
@Stateless
public class ServiceCompteClient implements ServiceCompteClientLocal{

    @EJB
    DaoCompteClient daoClient;
    
    @EJB
    ServiceMailLocal serviceMail;
    
    @Override
    public DtoCompteClient getCompte() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public DtoCompteClient seConnecter(String email, String password) throws ErreurLoginConnexion{
        
        List<DtoCompteClient> clients = daoClient.rechercherParMail(email);
        if(clients == null) throw  new ErreurLoginConnexion();
        for(DtoCompteClient client : clients){
            if(client.getPass().equals(password)){
                return client;
            }
        }
        throw new ErreurLoginConnexion();
    }

    @Override
    public Integer creerCompte(DtoCompteClient compteClient)throws ErreurCreationCompte {
        compteClient.setActif(Boolean.TRUE);
        
        if(compteClient.getEmail() == null || compteClient.getEmail() == "") throw  new ErreurCreationCompte("Champ Email obligatoire");
        List<DtoCompteClient> clients = daoClient.rechercherParMail(compteClient.getEmail());
        
        if(clients.size()>0){
            throw new ErreurCreationCompte("Compte déjà créé");
        } 
        
                
        System.out.println("dans le service creer compte");
             
        if(compteClient.getPass().length() < 6){
            throw new ErreurCreationCompte("Le mot de passe doit comporter au moins 6 caractères");
        }
        
       
          if(compteClient.getCivilite() == null){
            throw new ErreurCreationCompte("Selectionnez la civilité");
        } 
        
        Integer idClient = daoClient.ajouter(compteClient);
        if(idClient != null){
            serviceMail.envoyerMailCreationCompte(compteClient);
        }else{
            throw new ErreurCreationCompte("Probleme lors de l'acces a la base de données, veuillez réessayer plus tard.");
        }
        return idClient;
    }

    @Override
    public Boolean updateCompte() {
        throw new UnsupportedOperationException("Not supported yet.");
    }  
}
//        try {
//            int i = Integer.parseInt(compteClient.getTelFixe());
//        } catch (NumberFormatException e) {
//            throw new ErreurCreationCompte("Le n° de Tel fixe ne doit comporter que des chiffres");
//        }
 
